package com.xiaolun.synchronizedReview;

/**
 * 1、Java不但重视函数式编程还重视下面的接口是编程
 * 2、下面只有唯一一个方法，可以使用匿名内部类
 * 3、使用Lambda表达式解决了匿名内部类代码冗余的问题
 * Lambda口诀 ： 拷贝小括号，落地大括号,写死右箭头。
 */
interface Foo{
//	public void sayHello();
	//含有参数和返回值
	public int add(int x,int y);

	public static int sub(int x,int y){
		return x-y;
	}

	public static int sub2(int x,int y){
		return x-y;
	}
}

/**
 * 1、Lambda表达式
 * 2、函数式编程
 * 		int age = 23;
 * 		f(x) = y = kx + 1;
 */
public class LambdaExpressDemo2 {
	public static void main(String[] args) {
		//接口也能new出来
//		Foo foo = new Foo(){
//			@Override
//			public void sayHello() {
//				System.out.println("nihao --> " + "0810");
//			}
//
//			@Override
//			public int add(int x, int y) {
//				return 0;
//			}
//		};
//		foo.sayHello();
//		Foo foo = () -> {
//			System.out.println("你好 --> " + "0810");
//		};
//		foo.sayHello();

		Foo foo = (int x,int y) -> {
			System.out.println("come in add method " );
			return (x + y);
		};
		System.out.println(foo.add(1, 2));
		System.out.println(Foo.sub(2, 2));
	}
}
